home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-05-01 | 7.5 KB | 311 lines | [TEXT/MPS ] |
- ////////////////////////////////////////////////////////////////////////////
- // UBehavior.cp
- //
- // Contains: Implementation for Behavior abstract class
- //
- // Copyright 1984-1991 Apple Computer, Inc.All rights reserved.
- //
- // Change History:
- //
- // 2/22/91 rtm Initial creation of file
- //
- ////////////////////////////////////////////////////////////////////////////
-
- #ifndef __UMACAPPUTILITIES__
- #include <UMacAppUtilities.h>
- #endif
- #ifndef __UERRORMGR__
- #include <UErrorMgr.h>
- #endif
- #ifndef __UMACAPPGLOBALS__
- #include <UMacAppGlobals.h>
- #endif
- #ifndef __UOBJECT__
- #include <UObject.h>
- #endif
- #ifndef __UVIEW__
- #include <UView.h>
- #endif
- #ifndef __UBEHAVIOR__
- #include <UBehavior.h>
- #endif
-
-
- // •••••••••••••••••••••••••••••••••••••••••••••••••
- // • TBehavior •
- // •••••••••••••••••••••••••••••••••••••••••••••••••
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal void TBehavior::Initialize ( void ) // OVERRIDE
- {
- inherited::Initialize();
-
- fOwner = NULL;
- fPreviousBehavior = NULL;
- fNextBehavior = NULL;
-
- } // <- Initialize
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal void TBehavior::IBehavior ( void )
- {
-
- this->IObject ( );
-
- } // <- IBehavior
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- pascal TObject* TBehavior::Clone ( void ) // OVERRIDE
-
- {
- TBehavior* aClonedBehavior;
-
-
- aClonedBehavior = (TBehavior *)(inherited::Clone());
-
-
- return aClonedBehavior;
- }
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAClose
-
- pascal void TBehavior::Free ( void )
- {
-
- FreeIfObject ( fNextBehavior );
-
- inherited::Free ();
-
- } // <- Free
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal void TBehavior::SetNextBehavior ( TBehavior* nextBehavior )
- {
-
- if ( fNextBehavior )
- fNextBehavior->SetNextBehavior ( nextBehavior );
- else
- {
- fNextBehavior = nextBehavior;
- fNextBehavior->SetPreviousBehavior ( this );
- }
-
- } // <- SetNextBehavior
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal void TBehavior::SetOwner ( TEvtHandler* itsOwner )
- {
- fOwner = itsOwner;
-
- } // <- SetOwner
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal void TBehavior::SetPreviousBehavior ( TBehavior* previousBehavior )
- {
- fPreviousBehavior = previousBehavior;
-
- } // <- SetPreviousBehavior
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- pascal TBehavior* TBehavior::GetNextBehavior ( void )
- {
-
- return fNextBehavior;
-
- } // <- GetNextBehavior
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorNonRes
-
- pascal void TBehavior::InsertBefore ( TBehavior* insertMe,
- TBehavior* before )
- {
-
- // • We are one that insertion is going to be before
- if ( this == before )
- {
- if ( fPreviousBehavior )
- fPreviousBehavior->SetNextBehavior ( insertMe );
-
- insertMe->SetNextBehavior ( this );
- }
- else // • Pass message on down chain
- {
- if ( fNextBehavior )
- fNextBehavior->InsertBefore ( insertMe, before );
- }
-
- } // <- InsertBefore
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorNonRes
-
- pascal void TBehavior::InsertAfter ( TBehavior* insertMe,
- TBehavior* after )
- {
-
- // • We are one that insertion is going to be after
- if ( this == after )
- {
- if ( fNextBehavior )
- insertMe->SetNextBehavior ( this->GetNextBehavior () );
-
- this->SetNextBehavior ( insertMe );
- }
- else // • Pass message on down chain
- {
- if ( fNextBehavior )
- fNextBehavior->InsertAfter ( insertMe, after );
- }
-
- } // <- InsertAfter
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorNonRes
-
- pascal void TBehavior::Remove ( TBehavior* removeMe )
- {
- // • We are the one being removed
- if ( this == removeMe )
- {
- if ( fPreviousBehavior )
- fPreviousBehavior->SetNextBehavior ( this->GetNextBehavior () );
-
- this->SetNextBehavior ( NULL );
- // ••• Should the behavior Free itself or should the controller
- // be responsible for making sure that it is freed
- }
- else // • Pass message on down chain as we aren't one to be removed
- {
- if ( fNextBehavior )
- fNextBehavior->Remove ( removeMe );
- }
-
- } // <- Remove
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- pascal void TBehavior::DoAppleCommand ( CmdNumber aCmdNumber,
- const AppleEvent& message,
- const AppleEvent& reply )
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoAppleCommand ( aCmdNumber, message, reply );
- else if ( fOwner )
- fOwner->DoAppleCommand ( aCmdNumber, message, reply );
-
- } // <- DoAppleCommand
-
- //--------------------------------------------------------------------------------------
- #pragma segment MASelCommand
-
- pascal void TBehavior::DoCommandKey ( TToolboxEvent* event )
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoCommandKey ( event );
- else if ( fOwner )
- fOwner->DoCommandKey ( event );
-
- } // <- DoCommandKey
-
- //--------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- pascal void TBehavior::DoEvent ( EvtNumber eventNumber,
- TEvtHandler* source,
- TEvent* event )
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoEvent ( eventNumber, source, event );
- else if ( fOwner )
- fOwner->DoEvent ( eventNumber, source, event );
-
- } // <- DoEvent
-
- //--------------------------------------------------------------------------------------
- #pragma segment MASelCommand
-
- pascal void TBehavior::DoKeyCommand ( TToolboxEvent* event )
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoKeyCommand ( event );
- else if ( fOwner != NULL )
- fOwner->DoKeyCommand ( event );
-
- } // <- DoKeyCommand
-
- //--------------------------------------------------------------------------------------
- #pragma segment MASelCommand
-
- pascal void TBehavior::DoMenuCommand ( CmdNumber aCmdNumber )
-
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoMenuCommand ( aCmdNumber );
- else if ( fOwner )
- fOwner->DoMenuCommand ( aCmdNumber );
-
- } // <- DoMenuCommand
-
- //--------------------------------------------------------------------------------------
- #pragma segment MAEvtHandlerRes
-
- pascal void TBehavior::DoSetupMenus ( void )
- {
-
- if ( fNextBehavior )
- fNextBehavior->DoSetupMenus ();
- else if ( fOwner )
- fOwner->DoSetupMenus ();
-
- } // <- DoSetupMenus
-
- //--------------------------------------------------------------------------------------
- // CBehaviorIterator
- //----------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- Boolean CBehaviorIterator::More()
- {
- return (fCurrentBehavior != NULL);
- }
-
- //--------------------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- void CBehaviorIterator::Reset()
- {
- fCurrentBehavior = fFirstBehavior;
- }
-
- //--------------------------------------------------------------------------------------------------
- #pragma segment MABehaviorRes
-
- void CBehaviorIterator::Advance()
- {
- fCurrentBehavior = fNextBehavior;
- if (fCurrentBehavior)
- fNextBehavior = fCurrentBehavior->GetNextBehavior();
- }
-
-